package org.fanximall.erp.product.application.service;

import org.fanximall.erp.common.tree.TreeDefinitionModel;
import org.fanximall.erp.product.application.req.CategorySaveCommand;
import org.fanximall.erp.product.application.resp.CategoryTreeRespDTO;
import org.fanximall.erp.product.domain.dto.CategoryTreeModel;

import java.util.List;

/**
 * @author :  william
 * @version :  V1.0  created in 2024/5/6
 * 类目业务层
 */
public interface CategoryService {

    /**
     * 添加类目信息
     * @param categorySaveCommand
     */
    void createCategory(CategorySaveCommand categorySaveCommand);

    /**
     * 修改类目层级
     * @param categoryId
     * @param parentCategoryId
     */
    void updateCategoryLevel(Long categoryId,Long parentCategoryId);

    /**
     * 修改类目状态
     * @param categoryId
     * @param state
     */
    void updateCategoryState(Long categoryId, Integer state);

    /**
     * 修改类目信息
     * @param categorySaveCommand
     */
    void updateCategory(CategorySaveCommand categorySaveCommand);



    /**
     * 根据类目状态获取类目树
     *
     * @param state
     * @return
     */
    List<TreeDefinitionModel<CategoryTreeRespDTO>> getTreeByStateAndName(Integer state, String name);


    /**
     * 根据类目id 获取所有的父节点
     * @param categoryId
     * @return
     */
    TreeDefinitionModel<CategoryTreeRespDTO> getParentNode(Long categoryId);
}
